env = "opensocial";
config = {};
config.root_namespace = "api/private/"; 
//habilita el uso de un script como proxy para realizar peticiones ajax cross-domain api
config.use_proxy = true; 

// Configuracion de la direcci�n del API por ambiente
config.env = {};
config.env.dev = {
	api: "http://api.sandbox.compuclick.railsplayground.net/",
	proxy: "proxy.cgi",
	site: "http://localhost:8080/customizing-core/compuclick/"
};

config.env.sandbox = {
	api: "http://api.sandbox.compuclick.railsplayground.net/",
	proxy: "proxy.cgi",
	site: "http://sandbox.compuclick.com.ve/"
};

config.env.opensocial = {
	api: "http://api.sandbox.compuclick.railsplayground.net/",
	proxy: "proxy.cgi",
	site: "http://gadget-compuclickproducts.googlecode.com/svn/trunk/"
};
 
config.env.qa = {
	api: "http://api.compuclick.railsplayground.net/",
	proxy: "proxy.cgi",
	site: "http://qa.compuclick.railsplayground.net/"
};

config.env.pro = {
	api: "http://api.compuclick.railsplayground.net/",
	proxy: "proxy.cgi",
	site: "http://site.compuclick.railsplayground.net/"
};

// Descriptor de los servicios disponibles 
config.services = {  
	"mailsdeliver": config.env[env]['api'] + config.root_namespace + "mails/deliver.json"
};

// variantes de la aplicacion
config.variants = {
	widget:  "widget-products.json", //config.env[env]['site'] +
	gadget: config.env[env]['site'] + "iproducts.json", 
	emailcompany: "nrching@gmail.com",
	formatCurrency: "Bs."
}

/* 
 * Devuelve una propiedad especifica de la configuraci�n por ambiente (dev, qa, pro).
 *
 * ej.: config.properties("site") => http://site.imperialtour.com.ve/public/
 *
 * 1) http://api.qa2.sitio-i.com/ ( sin proxy habilitado )
 *
 */
config.properties = function(property){
	return config.env[env][property];
};

/* 
 * Devuelve la url del api.
 *
 * ej. 1) http://api.qa2.sitio-i.com/ ( sin proxy habilitado )
 *     2) http://localhost/proxy.php ( con proxy habilitado )
 */
config.api = function(use_proxy){
	var use_proxy = use_proxy || config.use_proxy;
	if ( use_proxy ){
		return config.env[env]['proxy'];
	}else{
		return config.env[env]['api'];
	}
};

/* 
 * Devuelve la url del servicio solicitado.
 *
 * ej.: core.config.proxy_and_service('products')
 *
 * 1) http://api.qa2.sitio-i.com/api/private/products.json ( sin proxy habilitado )
 * 2) http://localhost/proxy.php?_url=http://localhost/api/private/products.json ( con proxy habilitado )
 *
 */
config.proxy_and_service = function(service, url, no_proxy){
	var u = "";
	if ( url ){
		u = "/"+url;
	}
	
	if (!no_proxy) {
		return config.env[env]['proxy'] + "?_url=" + config.services[service] + u + ".json?";
	} else {
		return config.services[service] + u + ".json";
	}
};

/*
 * Le agrega parametros adicionales a los parametros a ser enviados en una petici�n
 * Parametros:
 * params: parametros de la peticion
 * options['service']: nombre del servicio a quien se le va a realizar la peticion
 * options['url']: url adicional o nombre del m�todo que va invocar
 * options['verb']: tipo de petici�n a realizar PUT, DELETE, POST, GET
 *
 * ej.
 * 	var extra_params = {service:'account',url:"/create.json",verb:'PUT'};
 *	$.post( config.api(), config.default_params(params,extra_params) , core.account.SignUp.onComplete );
 *
 */
config.default_params = function(params,options){
	if ( config.use_proxy ){
		//ej. http://localhost:3001/api/private/account
		params._url = config.services[options['service']] + options['url'];
	}
	if ( options['verb'] ){
		params._method = options['verb'];
	}
	return params;
} 
